// 注释规范： JSDoc
/**
 * 发送ajax异步请求 get
 * @param {String} url 接口地址
 * @param {String} params 接口参数，格式： 参数名=值&....&参数名=值
 * ....
 */
function get(url, params, callabck, headerFn = null)
{
    // 一、创建xhr对象
    const xhr = new XMLHttpRequest
    // 二、监控请求状态
    xhr.onreadystatechange = () => {
        // 判断后端是否返回数据
        if (xhr.readyState === 4)
        {
            // 判断返回数据的状态
            if (xhr.status === 200)
            {   
                // 获取数据
                let res = JSON.parse(xhr.responseText)
                // 不同逻辑处理：后期搞一个形参 函数类型 
                callabck(res)
            } else {
                console.log('有瑕疵：', xhr.status);
            }
        }
    }
    // 三、设置请求方式、请求地址
    // xhr.open('get', `请求地址?请求参数`)
    xhr.open('get', `${url}?${params}`)

    if (headerFn) headerFn(xhr)
    
    // 四、发送请求
    xhr.send(null)
}


/**
 * 发送POST异步请求
 * @param {String}   url       请求地址
 * @param {String}   params    请求参数
 * @param {Function} callback  回调函数
 * @param {Object}   headers   请求头
 * @param {Stirng}   dataType  返回的数据类型
 */
function post(url, params, callback, headers = {}, dataType='json')
{
    // 一、创建xhr对象
    const xhr = new XMLHttpRequest
    // 二、监控请求状态
    xhr.onreadystatechange = () => {
        // 判断拿到后端数据
        if (xhr.readyState === 4)
        {
            // 判断拿到数据的状态
            if (xhr.status === 200)
            {
                // 获取数据
                let res = xhr.responseText
                switch (dataType) {
                    case 'json':
                        res = JSON.parse(res)
                        break;
                
                    default:
                        break;
                }
                // 不同逻辑处理
                callback(res)
            } else {
                console.log('有瑕疵：', xhr.status);
            }
        }
    }
    // 三、设置请求方式、请求地址
    // xhr.open('post', `请求地址`)
    xhr.open('post', url)
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
    for (let key in headers)
    {
        xhr.setRequestHeader(key, headers[key])
    }
    // 四、发送请求
    // xhr.send('请求参数')
    xhr.send(params)
}
